package lanou.a36ke_01.tools;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;

/**
 * 　　　　　　　　┏┓　　　┏┓+ +
 * 　　　　　　　┏┛┻━━━┛┻┓ + +
 * 　　　　　　　┃　　　　　　　┃
 * 　　　　　　　┃　　　━　　　┃ ++ + + +
 * 　　　　　　 ████━████ ┃+
 * 　　　　　　　┃　　　　　　　┃ +
 * 　　　　　　　┃　　　┻　　　┃
 * 　　　　　　　┃　　　　　　　┃ + +
 * 　　　　　　　┗━┓　　　┏━┛
 * 　　　　　　　　　┃　　　┃
 * 　　　　　　　　　┃　　　┃ + + + +
 * 　　　　　　　　　┃　　　┃　　　　Code is far away from bug with the animal protecting
 * 　　　　　　　　　┃　　　┃ + 　　　
 * 　　　　　　　　　┃　　　┃
 * 　　　　　　　　　┃　　　┃　　+
 * 　　　　　　　　　┃　 　　┗━━━┓ + +
 * 　　　　　　　　　┃ 　　　　　　　┣┓
 * 　　　　　　　　　┃ 　　　　　　　┏┛
 * 　　　　　　　　　┗┓┓┏━┳┓┏┛ + + + +
 * 　　　　　　　　　　┃┫┫　┃┫┫
 * 　　　　　　　　　　┗┻┛　┗┻┛+ + + +
 * <p/>
 * RequestQueue 的单利
 * 需要把所有的请求加到同一个requestQueue里,来保证多个请求的并发能被Volley正确的调度
 */
public class SingleQueue {

    private static SingleQueue ourInstance;
    private static SingleQueue singleQueue;
    private RequestQueue mRequestQueue;//请求队列

    //构造方法私有化
    private SingleQueue () {
        //使用Application的Context,来避免内存泄露
        mRequestQueue = Volley.newRequestQueue(MyApp.getContext());
    }
    //入口方法
    public static SingleQueue getInstance(){
        //保证效率的
        if (singleQueue == null) {
            //SingleQueue.class 可以用来修饰方法 修饰代码块 只执行一个线程
            synchronized (SingleQueue.class) {
                if (singleQueue == null) {
                    singleQueue = new SingleQueue();//线程1,2
                }
            }
        }
        return singleQueue;
    }
    //将请求添加到请求队列
    public void addRequest(Request request){
        mRequestQueue.add(request);
    }
}
